using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using DominioSATT;
using RepositorioSATT.Conexiones;

namespace RepositorioSATT
{
    public class AfiliadoclubRepositorio : IAfiliadoclubRepositorio, IMapeadorFila<Afiliadoclub>
    {
        protected Conexion conn;
        protected string sql = "";
        DataTable dt = new DataTable();
        IMapeadorFila<Afiliadoclub> mapear;
        public AfiliadoclubRepositorio()
        {
            conn = new Conexion();
        }

        #region IAfiliadoclubRepositorioSATT Members

        public List<Afiliadoclub> Listar(int IdClub)
        {
            sql = "select * from  PersonaClub where IDClub = " + IdClub +" and Estado = 'True'";
            dt = conn.Listar(sql);
            List<Afiliadoclub> Lista = new List<Afiliadoclub>();
            foreach (System.Data.DataRow dr in dt.Rows)
            {
                mapear = this;
                Lista.Add(mapear.MapearTabla(dr));
            }
            return Lista;
        }
        public Afiliadoclub Buscar(int Dni, int IdClub)
        {
            sql = " select * from PersonaClub where  Dni= " + Dni + " and IdClub = " + IdClub;
            DataRow Dr = conn.Buscar(sql);
            mapear = this;
            return mapear.MapearTabla(Dr);
        }
        public void Agregar(Afiliadoclub Afiliacion)
        {
            string Tabla = "PersonaClub";
            string campos = "Dni,IdClub,FechaInscripcion,Estado";
            string valores = Afiliacion.Afiliado.Dni.ToString() + "," + Afiliacion.Club.Idclub + ",'" + string.Format("{0:yyyyMMdd}",Afiliacion.Fechainscripcion) + "','" + Afiliacion.Estado.ToString()+"'";
            conn.AgregarSinId(Tabla, campos, valores);
        }

        public void Modificar(Afiliadoclub Afiliacion)
        {
            string sql = "UPDATE PersonaClub SET DNI=" + Afiliacion.Afiliado.Dni +
                                          ",IdClub=" + Afiliacion.Club.Idclub +
                                          ",FechaInscripcion='" +string.Format("{0:yyyyMMdd}", Afiliacion.Fechainscripcion) +
                                          "',Estado='" + Convert.ToBoolean(Afiliacion.Estado) +
                                          "' WHERE IdClub=" + Afiliacion.Club.Idclub +
                                          " AND DNI=" + Afiliacion.Afiliado.Dni;
            conn.ActualizarOEliminar(sql);


        }
        #endregion

        #region IMapeadorFila<Afiliadoclub> Members

        public Afiliadoclub MapearTabla(System.Data.DataRow fila)
        {
            Afiliadoclub retorno = null;
            if (fila != null)
            {
                IPersonaRepositorio personarepo = new PersonaRepositorio();
                Persona persona = personarepo.Obtener(Convert.ToInt32(fila["DNI"]));
                IClubRepositorio clubrepo = new ClubRepositorio();
                Club club = clubrepo.Buscar(Convert.ToInt32(fila["IdClub"]));
                DateTime FechaInscripcion = fila.IsNull("Fechainscripcion") == true ? DateTime.Now : Convert.ToDateTime(fila["Fechainscripcion"]);
                bool Estado = (fila.IsNull("Estado") == true ? false : Convert.ToBoolean(fila["Estado"]));
                Afiliadoclub Afiliado = new Afiliadoclub();
                Afiliado.Afiliado = persona;
                Afiliado.Club = club;
                Afiliado.Fechainscripcion = FechaInscripcion;
                Afiliado.Estado = Estado;

                retorno = Afiliado;
            }
            return retorno;
        }

        #endregion
    }
}
